// //单一类型
// let b: number
// b = 123
// //声明并赋值
// let c: boolean = true
// function fun(name: string) {
//    console.log(name);
// }
// console.log(b, 'b');
// console.log(c, 'b');
// fun('index')
//2 ------------------------自动类型判断
// let one: number
// one = 123
// let two = 8  //声明 一个变量并赋值
// console.log(typeof one);
// console.log(typeof two);
// any 可以是任何值  如果是字符串赋值  同时也会变成字符串
{
    var a = void 0;
    a = 123;
    var c = void 0;
    c = '123';
    c = a;
    console.log(typeof c, 'c是什么类型的'); //number  类型
}
// Ts的 unknown类型 和any 类型区别
{
    var a = void 0;
    a = 123;
    a = '123';
    a = true;
    var b = void 0;
    // unknown 类型必须是同类型才能 赋值  
    if (typeof a === 'boolean')
        b = a;
    console.log(b, 'bunknown');
    console.log(a, 'bunknown');
}
// TS 中的类型断言   字面意思 ：告诉你是什么类型
{
    var a = void 0;
    a = 123;
    var b = void 0;
    if (typeof a === 'number')
        b = a;
    b = a; // a as number  赋值前告诉他是什么类型
    console.log(b, 'Ts的断言');
}
// TS 中的函数 
{
    //正确的演示  
    function list() {
        return 123;
    }
    var a = list();
    //必须声明
    console.log(a, '   let a = list(123) '); // 123
    // void 类型 代表没有返回值  或者返回值为空  
    function fun() {
        //其他类型都不会返回
        // return null //  可以返回 
        // return undefined // 也可以返回 
        // return;  
    }
}
// TS  中的对象类型声明
{
    var a = void 0;
    a = {};
    a = function () { };
    //  用 ? 来判断 需求可有可无对象
    var c = void 0;
    //unknown 可以是任何类型  以对象的形式去声明
    var d = void 0;
    // [propNmae:string]  满足任何字符串   
    d = {
        name: 'sadas',
        sayhello: function () {
            console.log(true);
        }
    };
    if (typeof d.sayhello === 'function')
        d.sayhello();
    console.log(d, 'dddddddd'); // true
}
// TS   中扩展你类型  tuple叫元组     
// 元组就是定长的数组  固定数组的指定类型 叫元组
{
    var a = void 0;
    a = ['xxsxa', true, 123];
}
// TS 中的Enum 
{
    var a = void 0;
    (function (a) {
        a[a["male"] = 0] = "male";
        a[a["female"] = 1] = "female";
    })(a || (a = {}));
    console.log(a.male, 'male'); //  0 
    console.log(a.female, 'female'); // 1 
    //数字枚举
    // enum a {
    //    male = 3,
    //    female
    // }
    // console.log(a.male, 'male')    //   3
    // console.log(a.female, 'female')  //  4 
    // 也就是说 male 是 0  femal 是会递增  +1
}
// TS  中联合类型声明  
{
    var a = void 0;
    a = 123;
    a = '123';
    var b = void 0;
    b = 12;
    // b = 15  // 报错  B只能是 12 13 14  
}
// TS   联合类型声明    type myType （别名）
{
    var a = void 0;
}
// TS  配置选项  自动编译
{
    //有编译了嘛？？？？？
    console.log('在看看？？？121232132133213');
}
